package com.example.ad.sdk.domain.extensions

import kotlin.text.iterator

/**
 * 从输入字符串中移除指定的字符。
 *
 * @param input 输入字符串
 * @param charsToRemove 要移除的字符列表
 * @return 移除指定字符后的字符串
 */
fun String.clear(input: String, charsToRemove: List<Char>): String {
    val regex = charsToRemove.joinToString("|").toRegex()
    return input.replace(regex, "")
}

/**
 * 移除字符串中的括号及其内容。
 *
 * @return 移除括号及其内容后的字符串
 */
fun String.removeParen(): String {
    val regex = "\\s*\\(.*?\\)".toRegex()
    return this.replace(regex, "")
}

/**
 * 移除字符串中的所有反斜杠。
 *
 * @return 移除反斜杠后的字符串
 */
fun String.removeBackslashes(): String {
    return this.replace("\\", "")
}

/**
 * 将JSON字符串转换为可变的Map。
 *
 * @return 转换后的MutableMap
 */
fun String.toMutableMap(): MutableMap<String, String> {
    val map = mutableMapOf<String, String>()
    val temp = this.replace("[{}]".toRegex(), "")
    val replace = temp.replace("\"", "")
    val keyValue = replace.split(",")
    keyValue.forEach {
        val pairs = it.split(":")
        if (pairs.size == 2) {
            map[pairs[0]] = pairs[1]
        }
    }
    return map
}


// 定义一个映射，将阿拉伯数字字符映射到对应的常规数字字符
val digitsMap: Map<Char, Char> by lazy {
    mapOf(
        '٠' to '0',
        '١' to '1',
        '٢' to '2',
        '٣' to '3',
        '٤' to '4',
        '٥' to '5',
        '٦' to '6',
        '٧' to '7',
        '٨' to '8',
        '٩' to '9'
    )
}

/**
 * 将字符串中的阿拉伯数字转换为常规数字
 * 此函数用于替换字符串中的阿拉伯数字字符（٠١٢٣٤٥٦٧٨٩）为对应的常规数字字符（0123456789）
 * 如果字符串为空或仅包含空白字符，则直接返回原字符串
 *
 * @return 转换后的字符串，其中阿拉伯数字被替换为常规数字，其他字符保持不变
 */
fun String.convertArabicDigitsToNormal(): String {
    // 检查字符串是否为空或仅包含空白字符，如果是，则直接返回
    if (this.isBlank()) {
        return this
    }

    // 创建StringBuilder用于构建转换后的字符串
    val convertedDigits = StringBuilder()
    // 遍历字符串中的每个字符
    for (char in this) {
        // 尝试从digitsMap中获取当前字符对应的常规数字字符
        val convertedChar = digitsMap[char]
        // 如果找到了对应的常规数字字符，则添加到convertedDigits中
        if (convertedChar != null) {
            convertedDigits.append(convertedChar)
        } else {
            // 如果没有找到，则将原字符添加到convertedDigits中
            convertedDigits.append(char)
        }
    }
    // 将转换后的字符串返回
    return convertedDigits.toString()
}


